package com.dingzhen.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.MessageListener;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;


@Configuration
public class RedisConfig {
    /**
     * 将RedisMessageListenerContainer注入IOC容器
     * 为Redis消息侦听器提供异步行为的容器。 处理侦听，转换和消息分发的底层细节。
     * @param connectionFactory
     * @return
     */
    @Bean
    public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory connectionFactory) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        // 设置connectionFactory
        container.setConnectionFactory(connectionFactory);
        //将消息侦听器添加到（可能正在运行的）容器。 如果容器正在运行，则侦听器将尽快开始接收（匹配）消息
        container.addMessageListener(new MessageListener() {
            @Override
            public void onMessage(Message message, byte[] pattern) {
                String msg =new String(message.getBody());
                System.err.println(new String(pattern)+" 主题发布： "+msg );

            }
        },
                //构造一个新的{PatternTopic}实例
                new PatternTopic("TOPIC"));
        return container;
    }

}
